home *** CD-ROM | disk | FTP | other *** search
- /* Fchart - font.c */
- /*
- * Copyright (C) 1990 Piotr Filip Sawicki
- *
- * Permission to use, copy, and distribute this software and its
- * documentation for any purpose with or without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.
- *
- * Permission to modify the software is granted, but not the right to
- * distribute the modified code. Modifications are to be distributed
- * as patches to released version.
- *
- * This software is provided "as is" without express or implied warranty.
- *
- * send your comments or suggestions to fs@uwasa.fi
- *
- ***********************************************************************
- * This file contains two vector fonts:
- * - nonstandard my private one
- * - public-domain Hershey Roman
- * courtesy Joe Felsenstein, joe@genetics.washington.edu
- * Currently the latter is used, though the former has better digits.
- * To use my font, add the following line to the "fchart.h":
- * #define NO_ROMAN_FONT
- * and rebuild the entire application.
- ***********************************************************************
- *
- */
-
- #include <stdio.h>
- #include <math.h>
- #include "plot.h"
- #include "fchart.h"
-
- #ifdef NO_ROMAN_FONT
-
- /* character height: 256, character width: 20-256 */
-
- static unsigned char I_shape[] = { 10,20 , 10,220 , 0 };
- static unsigned char P_shape[] = { 10,220 , 150,220 , 200,190 , 200,160 , 150,130 , 10,130 , 0 };
- static unsigned char B_shape[] = { 150,130 , 200,90 , 200,55 , 150,20 , 10,20 , 0 };
- static unsigned char R_shape[] = { 150,130 , 200,90 , 200,20 , 0 };
- static unsigned char D_shape[] = { 10,220 , 150,220 , 200,190 , 200,55 , 150,20 , 10,20 , 0 };
- static unsigned char t_shape[] = { 150,220 , 10,220 , 0 };
- static unsigned char m_shape[] = { 10,120 , 150,120 , 0 };
- static unsigned char l_shape[] = { 150,20 , 10,20 , 0 };
- static unsigned char L_shape[] = { 10,220 , 10,20 , 150,20 , 0 };
- static unsigned char i_shape[] = { 150,20 , 150,220 , 0 };
- static unsigned char b_shape[] = { 10,220 , 150,20 , 0 };
- static unsigned char s_shape[] = { 10,20 , 150,220 , 0 };
- static unsigned char u_shape[] = { 5,10 , 105,10 , 0 };
- static unsigned char T_shape[] = { 80,20 , 80,220 , 0 };
- static unsigned char d1shape[] = { 80,220 , 10,170 , 0 };
- static unsigned char J_shape[] = { 80,220 , 80,55 , 50,20 , 20,20 , 10,35 , 0 };
- static unsigned char V_shape[] = { 80,20 , 10,220 , 0 };
- static unsigned char d7shape[] = { 80,20 , 150,220 , 0 };
- static unsigned char d4shape[] = { 10,220 , 10,100 , 100,100 , 0 };
- static unsigned char M_shape[] = { 10,220 , 125,20 , 240,220 , 240,20 , 0 };
- static unsigned char W_shape[] = { 10,220 , 80,20 , 130,130 , 180,20 , 250,220 , 0 };
- static unsigned char K_shape[] = { 200,220 , 10,100 , 200,20 , 0 }; /* wrong !!! */
- static unsigned char C_shape[] = { 200,190 , 150,220 , 60,220 , 10,190 , 10,55 , 60,20 , 150,20 , 200,55 , 0 };
- static unsigned char O_shape[] = { 200,55 , 200,190 , 0 };
- static unsigned char G_shape[] = { 200,20 , 200,120 , 120,120 , 0 };
- static unsigned char Q_shape[] = { 130,55 , 190,10 , 0 };
- static unsigned char d0shape[] = { 10,55 , 60,20 , 100,20 , 150,55 , 150,190 , 100,220 , 60,220 , 10,190 , 10,55 , 150,190 , 0 };
- static unsigned char p_shape[] = { 10,20 , 10,20 , 0 };
- static unsigned char S_shape[] = { 200,190 , 150,220 , 60,220 , 10,190 , 10,160 , 60,130 , 150,120 , 200,90 , 200,55 , 150,20 , 60,20 , 10,55 , 0 };
- static unsigned char U_shape[] = { 10,220 , 10,55 , 60,20 , 100,20 , 150,55 , 150,220 , 0 };
- static unsigned char A_shape[] = { 10,20 , 80,220 , 150,20 , 0 };
- static unsigned char a_shape[] = { 45,100 , 115,100 , 0 };
- static unsigned char Y_shape[] = { 150,220 , 80,100 , 80,20 , 0 };
- static unsigned char y_shape[] = { 10,220 , 80,100 , 0 };
- static unsigned char d_shape[] = { 150,180 , 100,210 , 60,210 , 10,180 , 10,150, 60,130 , 100,110 , 150,95 , 150,65 , 100,30 , 60,30 , 10,65 , 0 };
- static unsigned char d2shape[] = { 10,190 , 60,220 , 100,220 , 150,190 , 150,160 , 10,55 , 10,20 , 150,20 , 0 };
- static unsigned char d3shape[] = { 10,190 , 60,220 , 100,220 , 150,190 , 150,160 , 100,130 , 150,90 , 150,55 , 100,20 , 60,20 , 10,55 , 0 };
- static unsigned char x_shape[] = { 80,50 , 80,190 , 0 };
- static unsigned char d5shape[] = { 150,220 , 10,220 , 10,120 , 100,120 , 150,90 , 150,55 , 100,20 , 60,20 , 10,55 , 0 };
- static unsigned char d6shape[] = { 150,190 , 100,220 , 60,220 , 10,190 , 10,90 , 60,120 , 100,120 , 150,90 , 150,55 , 100,20 , 60,20 , 10,55 , 10,90 , 0 };
- static unsigned char d9shape[] = { 10,55 , 60,20 , 100,20 , 150,55 , 150,160 , 100,130 , 60,130 , 10,160 , 10,190 , 60,220 , 100,220 , 150,190 , 150,160 , 0 };
- static unsigned char d8shape[] = { 60,130 , 100,130 , 150,160 , 150,190 , 100,220 , 60,220 , 10,190 , 10,160 , 60,130 , 10,90 , 10,55 , 60,20 , 100,20 , 150,55 , 150,90 , 100,130 , 0 };
- static unsigned char pLshape[] = { 60,220 , 10,160 , 10,55 , 60,20 , 0 };
- static unsigned char pRshape[] = { 10,220 , 60,160 , 60,55 , 10,20 , 0 };
-
- struct Char trt[128] = {
- /* . */ { 20 , p_shape , NULL , NULL }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- /* */ { 20 , NULL , NULL , NULL }, { 0 }, { 0 }, { 0 },
- /* $ */ { 160 , T_shape , d_shape , NULL }, { 0 }, { 0 }, { 0 },
- /* ( */ { 70 , pLshape , NULL , NULL },
- /* ) */ { 70 , pRshape , NULL , NULL },
- { 0 },
- /* + */ { 160 , m_shape , x_shape , NULL },
- { 0 },
- /* - */ { 160 , m_shape , NULL , NULL },
- /* . */ { 20 , p_shape , NULL , NULL },
- /* / */ { 160 , s_shape , NULL , NULL },
- /* 0 */ { 160 , d0shape , NULL , NULL },
- /* 1 */ { 90 , T_shape , d1shape , NULL },
- /* 2 */ { 160 , d2shape , NULL , NULL },
- /* 3 */ { 160 , d3shape , NULL , NULL },
- /* 4 */ { 110 , T_shape , d4shape , NULL },
- /* 5 */ { 160 , d5shape , NULL , NULL },
- /* 6 */ { 160 , d6shape , NULL , NULL },
- /* 7 */ { 160 , d7shape , t_shape , NULL },
- /* 8 */ { 160 , d8shape , NULL , NULL },
- /* 9 */ { 160 , d9shape , NULL , NULL }, { 0 }, { 0 },
- { 0 }, { 0 }, { 0 }, { 0 },
- { 0 },
- /* A */ { 160 , A_shape , a_shape , NULL },
- /* B */ { 210 , I_shape , P_shape , B_shape },
- /* C */ { 210 , C_shape , NULL , NULL },
- /* D */ { 210 , I_shape , D_shape , NULL },
- /* E */ { 160 , t_shape , L_shape , m_shape },
- /* F */ { 160 , t_shape , I_shape , m_shape },
- /* G */ { 210 , C_shape , G_shape , NULL },
- /* H */ { 160 , I_shape , m_shape , i_shape },
- /* I */ { 20 , I_shape , NULL , NULL },
- /* J */ { 90 , J_shape , NULL , NULL },
- /* K */ { 210 , I_shape , K_shape , NULL },
- /* L */ { 160 , L_shape , NULL , NULL },
- /* M */ { 250 , I_shape , M_shape , NULL },
- /* N */ { 160 , I_shape , b_shape , i_shape },
- /* O */ { 210 , C_shape , O_shape , NULL },
- /* P */ { 210 , I_shape , P_shape , NULL },
- /* Q */ { 210 , C_shape , O_shape , Q_shape },
- /* R */ { 210 , I_shape , P_shape , R_shape },
- /* S */ { 210 , S_shape , NULL , NULL },
- /* T */ { 160 , T_shape , t_shape , NULL },
- /* U */ { 160 , U_shape , NULL , NULL },
- /* V */ { 160 , V_shape , d7shape , NULL },
- /* W */ { 260 , W_shape , NULL , NULL },
- /* X */ { 160 , b_shape , s_shape , NULL },
- /* Y */ { 160 , Y_shape , y_shape , NULL },
- /* Z */ { 160 , l_shape , s_shape , t_shape }, { 0 },
- /* \ */ { 160 , b_shape , NULL , NULL }, { 0 }, { 0 }, /* _ */ { 110 , u_shape , NULL , NULL },
- { 0 },
- /* A */ { 160 , A_shape , a_shape , NULL },
- /* B */ { 210 , I_shape , P_shape , B_shape },
- /* C */ { 210 , C_shape , NULL , NULL },
- /* D */ { 210 , I_shape , D_shape , NULL },
- /* E */ { 160 , t_shape , L_shape , m_shape },
- /* F */ { 160 , t_shape , I_shape , m_shape },
- /* G */ { 210 , C_shape , G_shape , NULL },
- /* H */ { 160 , I_shape , m_shape , i_shape },
- /* I */ { 20 , I_shape , NULL , NULL },
- /* J */ { 90 , J_shape , NULL , NULL },
- /* K */ { 210 , I_shape , K_shape , NULL },
- /* L */ { 160 , L_shape , NULL , NULL },
- /* M */ { 250 , I_shape , M_shape , NULL },
- /* N */ { 160 , I_shape , b_shape , i_shape },
- /* O */ { 210 , C_shape , O_shape , NULL },
- /* P */ { 210 , I_shape , P_shape , NULL },
- /* Q */ { 210 , C_shape , O_shape , Q_shape },
- /* R */ { 210 , I_shape , P_shape , R_shape },
- /* S */ { 210 , S_shape , NULL , NULL },
- /* T */ { 160 , T_shape , t_shape , NULL },
- /* U */ { 160 , U_shape , NULL , NULL },
- /* V */ { 160 , V_shape , d7shape , NULL },
- /* W */ { 260 , W_shape , NULL , NULL },
- /* X */ { 160 , b_shape , s_shape , NULL },
- /* Y */ { 160 , Y_shape , y_shape , NULL },
- /* Z */ { 160 , l_shape , s_shape , t_shape }, { 0 },
- /* | */ { 90 , T_shape , NULL , NULL }, { 0 }, { 0 }, { 0 }
- } ;
-
- #else /* use roman font */
-
- /* character height: 80, character width: ~30 */
-
- static int char_32[2] = { -2600, 0 };
- static int char_33[9] = { -1531, 1517, -1512, 1411, 1510, 1611, 1512, -2000, 0 };
- static int char_40[12] = { -2135, 1933, 1730, 1526, 1421, 1417, 1512, 1708, 1905, 2103, -2400, 0 };
- static int char_41[12] = { -1335, 1533, 1730, 1926, 2021, 2017, 1912, 1708, 1505, 1303, -2400, 0 };
- static int char_42[8] = { -1825, 1813, -1322, 2316, -2322, 1316, -2600, 0 };
- static int char_44[10] = { -1611, 1510, 1411, 1512, 1611, 1609, 1507, 1406, -2000, 0 };
- static int char_45[4] = { -1419, 3219, -3600, 0 };
- static int char_46[7] = { -1512, 1411, 1510, 1611, 1512, -2000, 0 };
- static int char_47[4] = { -3035, 1203, -3200, 0 };
- static int char_0[19] = { -1931, 1630, 1427, 1322, 1319, 1414, 1611, 1910, 2110, 2411, 2614, 2719, 2722, 2627, 2430, 2131, 1931, -3000, 0 };
- static int char_1[6] = { -1627, 1828, 2131, 2110, -3000, 0 };
- static int char_2[16] = { -1426, 1427, 1529, 1630, 1831, 2231, 2430, 2529, 2627, 2625, 2523, 2320, 1310, 2710, -3000, 0 };
- static int char_3[17] = { -1531, 2631, 2023, 2323, 2522, 2621, 2718, 2716, 2613, 2411, 2110, 1810, 1511, 1412, 1314, -3000, 0 };
- static int char_4[7] = { -2331, 1317, 2817, -2331, 2310, -3000, 0 };
- static int char_5[19] = { -2531, 1531, 1422, 1523, 1824, 2124, 2423, 2621, 2718, 2716, 2613, 2411, 2110, 1810, 1511, 1412, 1314, -3000, 0 };
- static int char_6[25] = { -2628, 2530, 2231, 2031, 1730, 1527, 1422, 1417, 1513, 1711, 2010, 2110, 2411, 2613, 2716, 2717, 2620, 2422, 2123, 2023, 1722, 1520, 1417, -3000, 0 };
- static int char_7[6] = { -2731, 1710, -1331, 2731, -3000, 0 };
- static int char_8[31] = { -1831, 1530, 1428, 1426, 1524, 1723, 2122, 2421, 2619, 2717, 2714, 2612, 2511, 2210, 1810, 1511, 1412, 1314, 1317, 1419, 1621, 1922, 2323, 2524, 2626, 2628, 2530, 2231, 1831,
- static int char_9[25] = { -2624, 2521, 2319, 2018, 1918, 1619, 1421, 1324, 1325, 1428, 1630, 1931, 2031, 2330, 2528, 2624, 2619, 2514, 2311, 2010, 1810, 1511, 1413, -3000, 0 };
- static int char_58[12] = { -1524, 1423, 1522, 1623, 1524, -1512, 1411, 1510, 1611, 1512, -2000, 0 };
- static int char_59[15] = { -1524, 1423, 1522, 1623, 1524, -1611, 1510, 1411, 1512, 1611, 1609, 1507, 1406, -2000, 0 };
- static int char_63[21] = { -1326, 1327, 1429, 1530, 1731, 2131, 2330, 2429, 2527, 2525, 2423, 2322, 1920, 1917, -1912, 1811, 1910, 2011, 1912, -2800, 0 };
- static int char_A[8] = { -1931, 1110, -1931, 2710, -1417, 2417, -2800, 0 };
- static int char_B[23] = { -1431, 1410, -1431, 2331, 2630, 2729, 2827, 2825, 2723, 2622, 2321, -1421, 2321, 2620, 2719, 2817, 2814, 2712, 2611, 2310, 1410, -3100, 0 };
- static int char_C[20] = { -2826, 2728, 2530, 2331, 1931, 1730, 1528, 1426, 1323, 1318, 1415, 1513, 1711, 1910, 2310, 2511, 2713, 2815, -3100, 0 };
- static int char_D[16] = { -1431, 1410, -1431, 2131, 2430, 2628, 2726, 2823, 2818, 2715, 2613, 2411, 2110, 1410, -3100, 0 };
- static int char_E[10] = { -1431, 1410, -1431, 2731, -1421, 2221, -1410, 2710, -2900, 0 };
- static int char_F[8] = { -1431, 1410, -1431, 2731, -1421, 2221, -2800, 0 };
- static int char_G[23] = { -2826, 2728, 2530, 2331, 1931, 1730, 1528, 1426, 1323, 1318, 1415, 1513, 1711, 1910, 2310, 2511, 2713, 2815, 2818, -2318, 2818, -3100, 0 };
- static int char_H[8] = { -1431, 1410, -2831, 2810, -1421, 2821, -3200, 0 };
- static int char_I[4] = { -1431, 1410, -1800, 0 };
- static int char_J[12] = { -2231, 2215, 2112, 2011, 1810, 1610, 1411, 1312, 1215, 1217, -2600, 0 };
- static int char_K[8] = { -1431, 1410, -2831, 1417, -1922, 2810, -3100, 0 };
- static int char_L[6] = { -1431, 1410, -1410, 2610, -2700, 0 };
- static int char_M[10] = { -1431, 1410, -1431, 2210, -3031, 2210, -3031, 3010, -3400, 0 };
- static int char_N[8] = { -1431, 1410, -1431, 2810, -2831, 2810, -3200, 0 };
- static int char_O[23] = { -1931, 1730, 1528, 1426, 1323, 1318, 1415, 1513, 1711, 1910, 2310, 2511, 2713, 2815, 2918, 2923, 2826, 2728, 2530, 2331, 1931, -3200, 0 };
- static int char_P[14] = { -1431, 1410, -1431, 2331, 2630, 2729, 2827, 2824, 2722, 2621, 2320, 1420, -3100, 0 };
- static int char_Q[25] = { -1931, 1730, 1528, 1426, 1323, 1318, 1415, 1513, 1711, 1910, 2310, 2511, 2713, 2815, 2918, 2923, 2826, 2728, 2530, 2331, 1931, -2214, 2808, -3200, 0 };
- static int char_R[16] = { -1431, 1410, -1431, 2331, 2630, 2729, 2827, 2825, 2723, 2622, 2321, 1421, -2121, 2810, -3100, 0 };
- static int char_S[22] = { -2728, 2530, 2231, 1831, 1530, 1328, 1326, 1424, 1523, 1722, 2320, 2519, 2618, 2716, 2713, 2511, 2210, 1810, 1511, 1313, -3000, 0 };
- static int char_T[6] = { -1831, 1810, -1131, 2531, -2600, 0 };
- static int char_U[12] = { -1431, 1416, 1513, 1711, 2010, 2210, 2511, 2713, 2816, 2831, -3200, 0 };
- static int char_V[6] = { -1131, 1910, -2731, 1910, -2800, 0 };
- static int char_W[10] = { -1231, 1710, -2231, 1710, -2231, 2710, -3231, 2710, -3400, 0 };
- static int char_X[6] = { -1331, 2710, -2731, 1310, -3000, 0 };
- static int char_Y[7] = { -1131, 1921, 1910, -2731, 1921, -2800, 0 };
- static int char_Z[8] = { -2731, 1310, -1331, 2731, -1310, 2710, -3000, 0 };
- static int char_a[18] = { -2524, 2510, -2521, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2900, 0 };
- static int char_b[18] = { -1431, 1410, -1421, 1623, 1824, 2124, 2323, 2521, 2618, 2616, 2513, 2311, 2110, 1810, 1611, 1413, -2900, 0 };
- static int char_c[16] = { -2521, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2800, 0 };
- static int char_d[18] = { -2531, 2510, -2521, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2900, 0 };
- static int char_e[19] = { -1318, 2518, 2520, 2422, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2800, 0 };
- static int char_f[9] = { -2031, 1831, 1630, 1527, 1510, -1224, 1924, -2200, 0 };
- static int char_g[23] = { -2524, 2508, 2405, 2304, 2103, 1803, 1604, -2521, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2900, 0 };
- static int char_h[11] = { -1431, 1410, -1420, 1723, 1924, 2224, 2423, 2520, 2510, -2900, 0 };
- static int char_i[9] = { -1331, 1430, 1531, 1432, 1331, -1424, 1410, -1800, 0 };
- static int char_j[12] = { -1531, 1630, 1731, 1632, 1531, -1624, 1607, 1504, 1303, 1103, -2000, 0 };
- static int char_k[8] = { -1431, 1410, -2424, 1414, -1818, 2510, -2700, 0 };
- static int char_l[4] = { -1431, 1410, -1800, 0 };
- static int char_m[18] = { -1424, 1410, -1420, 1723, 1924, 2224, 2423, 2520, 2510, -2520, 2823, 3024, 3324, 3523, 3620, 3610, -4000, 0 };
- static int char_n[11] = { -1424, 1410, -1420, 1723, 1924, 2224, 2423, 2520, 2510, -2900, 0 };
- static int char_o[19] = { -1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, 2616, 2618, 2521, 2323, 2124, 1824, -2900, 0 };
- static int char_p[18] = { -1424, 1403, -1421, 1623, 1824, 2124, 2323, 2521, 2618, 2616, 2513, 2311, 2110, 1810, 1611, 1413, -2900, 0 };
- static int char_q[18] = { -2524, 2503, -2521, 2323, 2124, 1824, 1623, 1421, 1318, 1316, 1413, 1611, 1810, 2110, 2311, 2513, -2900, 0 };
- static int char_r[9] = { -1424, 1410, -1418, 1521, 1723, 1924, 2224, -2300, 0 };
- static int char_s[19] = { -2421, 2323, 2024, 1724, 1423, 1321, 1419, 1618, 2117, 2316, 2414, 2413, 2311, 2010, 1710, 1411, 1313, -2700, 0 };
- static int char_t[9] = { -1531, 1514, 1611, 1810, 2010, -1224, 1924, -2200, 0 };
- static int char_u[11] = { -1424, 1414, 1511, 1710, 2010, 2211, 2514, -2524, 2510, -2900, 0 };
- static int char_v[6] = { -1224, 1810, -2424, 1810, -2600, 0 };
- static int char_w[10] = { -1324, 1710, -2124, 1710, -2124, 2510, -2924, 2510, -3200, 0 };
- static int char_x[6] = { -1324, 2410, -2424, 1310, -2700, 0 };
- static int char_y[10] = { -1224, 1810, -2424, 1810, 1606, 1404, 1203, 1103, -2600, 0 };
- static int char_z[8] = { -2424, 1310, -1324, 2424, -1310, 2410, -2700, 0 };
- struct Char trt[128] = {
- /* ^@ */ { 10 , char_46 },
- /* ^A */ { 10 , char_46 },
- /* ^B */ { 10 , char_46 },
- /* ^C */ { 10 , char_46 },
- /* ^D */ { 10 , char_46 },
- /* ^E */ { 10 , char_46 },
- /* ^F */ { 10 , char_46 },
- /* ^G */ { 10 , char_46 },
- /* ^H */ { 10 , char_46 },
- /* ^I */ { 10 , char_46 },
- /* ^J */ { 10 , char_46 },
- /* ^K */ { 10 , char_46 },
- /* ^L */ { 10 , char_46 },
- /* ^M */ { 10 , char_46 },
- /* ^N */ { 10 , char_46 },
- /* ^O */ { 10 , char_46 },
- /* ^P */ { 10 , char_46 },
- /* ^Q */ { 10 , char_46 },
- /* ^R */ { 10 , char_46 },
- /* ^S */ { 10 , char_46 },
- /* ^T */ { 10 , char_46 },
- /* ^U */ { 10 , char_46 },
- /* ^V */ { 10 , char_46 },
- /* ^W */ { 10 , char_46 },
- /* ^X */ { 10 , char_46 },
- /* ^Y */ { 10 , char_46 },
- /* ^Z */ { 10 , char_46 },
- /* ^[ */ { 10 , char_46 },
- /* ^\ */ { 10 , char_46 },
- /* ^] */ { 10 , char_46 },
- /* ^^ */ { 10 , char_46 },
- /* ^_ */ { 10 , char_46 },
- /* */ { 16 , char_32 },
- /* ! */ { 10 , char_33 },
- /* " */ { 10 , char_46 },
- /* # */ { 10 , char_46 },
- /* $ */ { 10 , char_46 },
- /* % */ { 10 , char_46 },
- /* & */ { 10 , char_46 },
- /* ' */ { 10 , char_46 },
- /* ( */ { 14 , char_40 },
- /* ) */ { 14 , char_41 },
- /* * */ { 16 , char_42 },
- /* + */ { 10 , char_46 },
- /* , */ { 10 , char_44 },
- /* - */ { 26 , char_45 },
- /* . */ { 10 , char_46 },
- /* / */ { 22 , char_47 },
- /* 0 */ { 20 , char_0 },
- /* 1 */ { 20 , char_1 },
- /* 2 */ { 20 , char_2 },
- /* 3 */ { 20 , char_3 },
- /* 4 */ { 20 , char_4 },
- /* 5 */ { 20 , char_5 },
- /* 6 */ { 20 , char_6 },
- /* 7 */ { 20 , char_7 },
- /* 8 */ { 20 , char_8 },
- /* 9 */ { 20 , char_9 },
- /* : */ { 10 , char_58 },
- /* ; */ { 10 , char_59 },
- /* < */ { 10 , char_46 },
- /* = */ { 10 , char_46 },
- /* > */ { 10 , char_46 },
- /* ? */ { 18 , char_63 },
- /* @ */ { 10 , char_46 },
- /* A */ { 18 , char_A },
- /* B */ { 21 , char_B },
- /* C */ { 21 , char_C },
- /* D */ { 21 , char_D },
- /* E */ { 19 , char_E },
- /* F */ { 18 , char_F },
- /* G */ { 21 , char_G },
- /* H */ { 22 , char_H },
- /* I */ { 8 , char_I },
- /* J */ { 16 , char_J },
- /* K */ { 21 , char_K },
- /* L */ { 17 , char_L },
- /* M */ { 24 , char_M },
- /* N */ { 22 , char_N },
- /* O */ { 22 , char_O },
- /* P */ { 21 , char_P },
- /* Q */ { 22 , char_Q },
- /* R */ { 21 , char_R },
- /* S */ { 20 , char_S },
- /* T */ { 16 , char_T },
- /* U */ { 22 , char_U },
- /* V */ { 18 , char_V },
- /* W */ { 24 , char_W },
- /* X */ { 20 , char_X },
- /* Y */ { 18 , char_Y },
- /* Z */ { 20 , char_Z },
- /* [ */ { 10 , char_46 },
- /* \ */ { 10 , char_46 },
- /* ] */ { 10 , char_46 },
- /* ^ */ { 10 , char_46 },
- /* _ */ { 10 , char_46 },
- /* ` */ { 10 , char_46 },
- /* a */ { 19 , char_a },
- /* b */ { 19 , char_b },
- /* c */ { 18 , char_c },
- /* d */ { 19 , char_d },
- /* e */ { 18 , char_e },
- /* f */ { 12 , char_f },
- /* g */ { 19 , char_g },
- /* h */ { 19 , char_h },
- /* i */ { 8 , char_i },
- /* j */ { 10 , char_j },
- /* k */ { 17 , char_k },
- /* l */ { 8 , char_l },
- /* m */ { 30 , char_m },
- /* n */ { 19 , char_n },
- /* o */ { 19 , char_o },
- /* p */ { 19 , char_p },
- /* q */ { 19 , char_q },
- /* r */ { 13 , char_r },
- /* s */ { 17 , char_s },
- /* t */ { 12 , char_t },
- /* u */ { 19 , char_u },
- /* v */ { 16 , char_v },
- /* w */ { 22 , char_w },
- /* x */ { 17 , char_x },
- /* y */ { 16 , char_y },
- /* z */ { 17 , char_z },
- /* { */ { 10 , char_46 },
- /* | */ { 10 , char_46 },
- /* } */ { 10 , char_46 },
- /* ~ */ { 10 , char_46 },
- /* 46 */ { 10 , char_46 }
- };
-
- #endif /* NO_ROMAN_FONT */
-
- /* procedures for vector fonts */
-
- transp(tx, ty, A)
- int tx, ty;
- MATRIX A;
- /* transpose */
- {
- register int i, j;
- for (i=0; i<3; i++) {
- for (j=0; j<3; j++)
- A[i][j] = 0.0;
- A[i][i] = 1.0;
- }
- A[0][2] = -tx;
- A[1][2] = -ty;
- }
-
- scale(sx, sy, A)
- double sx, sy;
- MATRIX A;
- /* scale */
- {
- register int i, j;
- for (i=0; i<3; i++)
- for (j=0; j<3; j++)
- A[i][j] = 0.0;
- A[0][0] = sx;
- A[1][1] = sy;
- A[2][2] = 1.0;
- }
-
- rotat(al, A)
- double al;
- MATRIX A;
- /* rotate */
- {
- register int i;
- double s;
- for (i=0; i<2; i++)
- A[i][2] = A[2][i] = 0.0;
- A[2][2] = 1.0;
- s = sin(al);
- A[0][0] = A[1][1] = cos(al);
- A[0][1] = s;
- A[1][0] = -s;
- }
-
- multi(A, B, C)
- MATRIX A, B, C;
- /* multiply matrices */
- {
- register int i, j, k;
- register double db;
- for (i=0; i<3; i++)
- for (j=0; j<3; j++) {
- for (k=0, db=0.0; k<3; k++)
- db += A[i][k] * B[k][j];
- C[i][j] = db;
- }
- }
-